Python import 与 |
您所在的位置:网站首页 › python import this › Python import 与 |
import module 使用from import *导入模块时,若显式定义了__all__,则只导入__all__中的name,否则会导入除以下划线开头的所有name 文件目录结构 |---main.py |---module.py定义module文件: # __all__ in a module, means that when you import * from the module, only those names in the __all__ will imported __all__ = ['hello', 'Person', '__private'] _internal = 'internal' __private = 'private' class Person(): def __init__(self): print('init person') def hello(): print('hello') def world(): print('world')导入模块: import module module.Person() module.hello() # 可以访问以下划线开头的name print(module._internal) module.world() # ====================================== from module import * Person() hello() print(__private) # NameError: name 'world' is not defined # world() # NameError: name '_internal' is not defined print(_internal)import packagepackage中的__init__.py文件会影响到包文件的导入 文件目录结构 |---main.py |---packages |---__init__.py |---pkg.py__init__.py为空,main.py:import packages.pkg as ppkg ppkg.Package() ppkg._internal # ============================================= from packages import pkg pkg.Package() # ============================================= # 不会导入任何name from packages import *__init__.py中指定模块name__init__.py __all__ = ['pkg']main.py: import packages.pkg as ppkg ppkg.Package() ppkg._internal # ============================================= from packages import * pkg.Package() pkg._internal__init__.py中导出模块中的部分名称__init__.py: from pkg import * __all__ = ['Package', 'init']main.py import packages as pg pg.Package() # ============================================ from packages import Package Package() # ============================================= from packages import pkg # AttributeError: 'function' object has no attribute 'Package' # pkg.Package() # ============================================= from packages import * Package() init() # name 'pkg' is not defined # pkg.Package() # pkg._internal对于package的导入,若__init__.py不为空,则只能导入__init__.py中指定的模块(中的)name; __init__.py为空时,通过from package import *无法导入任何name; |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |